Skip to content

レガシーLinux/MySQLサーバーの段階的マイグレーションとバージョンジャンプ戦略

1行要約

MySQL 5.1のような超レガシー環境を最新MariaDB 11.xへ直接ダンプ・復元すると内部データディクショナリやインデックス破損が発生するため、5段階の順次バイナリアップグレード(5.1 ➔ 5.5 ➔ 5.7 ➔ 8.0 ➔ MariaDB)ステージング一時サーバーベースのIPスワップSOPを厳守する必要がある。

1. レガシー移行における2大技術障壁

  1. PHPランタイム互換性 (PHP 5.2/5.3 ➔ PHP 8.x): mysql_*廃止モジュールや厳格な型定義により、レガシーWebソースの改修が必須。
  2. データベースエンジンの直接ジャンプ不可: システムカタログ構造(mysql.*)や文字コードデフォルト値の違いにより直接移行時はデータ破損のリスク大。
[MySQL レガシーバージョンジャンプロードマップ]
MySQL 5.1 ──> MySQL 5.5 ──> MySQL 5.7 ──> MariaDB 10.11(LTS) ──> MariaDB 11.4
   │             │             │                  │
 (MyISAM)     (InnoDB)    (JSON/utf8mb4)     (新規オプティマイザ)

2. 4段階の無停止/最小ダウンタイム移行手順 (SOP)

Step 1. 新規ターゲット一時サーバー(Staging)の構築

最新OS(Rocky Linux 9.x / Ubuntu 24.04 LTS)上にPHP-FPM、MariaDB 11.4、Nginx/Apacheスタックを事前構成。

Step 2. 1次データ同期およびローカルhosts検証

  • WebルートおよびDBダンプをステージングへ1次転送。
  • クライアントPCのhostsファイルに一時サーバーIPを登録し、管理画面やクエリエラー(sql_mode)を事前検証。

Step 3. 順次DBスキーマおよびデータアップグレード

バージョンごとにmysql_upgradeを実行しシステムカタログを更新。

bash
mysql_upgrade -u root -p --force

Step 4. 最終カットオーバー (Cutover) および IPスワップ

  1. メンテナンス突入: 旧サーバーのWeb/DBデーモンを停止(新規書き込み完全遮断)。
  2. 最終差分ダンプ&インポート: 停止状態で差分データのみを高速インポート(所要時間5〜10分)。
  3. IPスワップ (IP Exchange):
    • 旧サーバーのパブリックIPを新サーバーへ切り替え、DNS伝播遅延(TTL)なしで即座にトラフィックを新環境へルーティング。

3. コアチェックポイント (Gotchas)

  1. 文字コード不整合 (latin1 vs euckr/cp949 vs utf8mb4): MySQL 5.1時代にlatin1テーブルへ日本語/韓国語バイナリを流し込んでいたレガシー構成があるため、ダンプ時の--default-character-set=latin1指定と文字コード変換検証が必須。
  2. パスワードハッシュ (old_passwords): MySQL 5.1の16バイト旧パスワードハッシュは最新DBで認証不可となるため、移行前に全DBユーザーの認証方式を再設定する。

投稿日: 2026-05-17 23:17:13更新日: 2026-08-15 13:57:00

Built with VitePress. | 📡 RSS Feed